﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FinanSoft.Entities;
using FinanSoft.BusinessLayer;
using FinanSoft.Utilities;

namespace FinanSoft
{
    public partial class frmCrearPeriodo : Form
    {
        public frmCrearPeriodo()
        {
            InitializeComponent();
        }
        // Me crea un nuevo Periodo
        private void crearPeriodo()
        {
            int Modalidad;
            if (radTrimestre.Checked)
            {
                Modalidad = 2;
            }
            else { Modalidad = 1; }
            Season[] temporadas;
            if (Modalidad == 2)
            {
                temporadas = new Season[4];

            }
            else { temporadas = new Season[12]; }
            
            PeriodManager.GetInstance().CreateNewPeriod(Modalidad, txtNombrePeriodo.Text,
                dtpFechaIni.Value, dtpFechaFin.Value, temporadas);
        }

        //Verificar si un periodo ya existe
        public bool existePeriodo()
        {
            AccountingPeriod[] periodos = PeriodManager.GetInstance().GetAccountingPeriod();
            for (int r = 0; r < periodos.Length; r++)
            {
                if (txtNombrePeriodo.Text.Equals(periodos[r].Name))
                {
                    return true;
                }
                else { }
            }
            return false;
        }


        //Me verifica que todos los campos esten con sus datos
        private void verificarEInsertarBD()
        {
            if (txtNombrePeriodo.Text.Equals(""))
            {
                MessageBox.Show(MessageConstants.MISSING_FIELDS, MessageConstants.TITLE, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else { crearPeriodo(); }

        } 

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }
        

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if(txtNombrePeriodo.Text.Equals(""))
            {
                MessageBox.Show(MessageConstants.MISSING_FIELDS, MessageConstants.TITLE, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else if (DateTime.Compare(dtpFechaIni.Value, dtpFechaFin.Value) > 0)
            {
                MessageBox.Show(MessageConstants.DATE_PERIOD, MessageConstants.TITLE, MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }
            else if (existePeriodo())
            {
                MessageBox.Show(MessageConstants.EXIST_PERIOD, MessageConstants.TITLE, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtNombrePeriodo.Text = "";
            }
            
            else
            {
                verificarEInsertarBD();
                Close();
            }
            
        }
    }
}
